# -*- coding: utf-8 -*-

"""
用于生成一个大文件

目前存在的疑问（待测试）：

1. 是否在所有的平台（操作系统 + 文件系统）上都适用
   - Windows
     - NTFS
     - FAT32
   - Linux（CentOS）
     - EXT4
     - XFS
     - NFS（via mount）
2. 哪种方式效率最好（所需时间、空间最少）
3. 如果指定文件大小超出可用空间总量，每种方法、每个平台的处理方式是怎样的
   - 不写
   - 只写可用空间
   - 直接报错
   - 用完了可用空间报错
4. 哪些方法可以获取一个 “干净” 的文件（zero filled），哪些方法可以写入指定内容
"""

KB = 1024
MB = 1024 * KB
GB = 1024 * MB


def FileGenerator(name, size=1):
    """ 文件生成器

    Params:
        name: 文件名称
        size: 文件大小，单位为字节
    """
    size = int(size)
    with open(name, 'wb') as f:
        a_byte_zero = '\x00'

        # 1.
        # for _ in range(size):
        #     f.write(a_byte_zero)

        # 2.
        # kb_number = size / KB
        # if kb_number:
        #     a_kb_zero = a_byte_zero * KB
        #     for _ in range(kb_number):
        #         f.write(a_kb_zero)
        # f.write(a_byte_zero * (size % KB))

        # 3.
        f.seek(size -1)
        f.write(a_byte_zero)

        # 4.
        # f.truncate(size)


if __name__ == '__main__':
    FileGenerator('a_big_file', GB)
